Kotlin object与companion object区别

object 可以定义在全局也可以在类的内部使用
object 就是单例模式的化身
object 可以实现 Java 中的匿名类
companion object 就是 Java 中的 static 变量
companion object 只能定义在对应的类中

object 可以作为变量的定义也可以是表达式
object 匿名类可以继承并超越 Java 中匿名类而实现多个接口
object 表达式当场实例化,但定义的 object 变量是延迟实例化的
object 和 companion object 都可以为其取名也可以隐姓埋名
object 匿名内部类甚至可以引用并更改局部变量
companion object 甚至还可以被扩展
Java 中需要结合 @JvmStatic 和 @JvmField 使用